import Vue from 'vue';
import App from './App.vue';
//引入路由
import router from '@/router';
//引入仓库
import store from '@/store';
//引入MockServe.js
import '@/mock/mockServe';  //只需要执行一次
//统一接收api文件里面的全部请求函数【统一引入】
import * as API from '@/api';
//三级联动组件----全局组件（多个组件中需要用到的组件）   全局组件都要在main.js注册，在其他页面中直接使用，不需要再引入
import TypeNav from '@/components/TypeNav';
import Carousel from '@/components/Carousel';
import Pagination from '@/components/Pagination';
//第一个参数：全局组件的名字   第二个参数：哪一个组件
Vue.component(TypeNav.name, TypeNav);
Vue.component(Carousel.name, Carousel);
Vue.component(Pagination.name, Pagination);
//按需引入elementUI
import { Button, MessageBox } from 'element-ui';
// elementUI注册全局组件
Vue.component(Button.name, Button);
//elementUI注册组件，挂在原型上
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;
// 引入懒加载插件
import VueLazyload from 'vue-lazyload'
//引入懒加载图片
import loading from '@/assets/images/loading.jpg'
//注册插件
Vue.use(VueLazyload, {
  // 懒加载默认的图片
  loading
})
//引入表单校验插件
import "@/utils/validate";

// 关闭控制台提醒
Vue.config.productionTip = false;
new Vue({
  el: '#app',
  render: h => h(App),
  beforeCreate() {
    //配置全局事件总线$bus配置
    Vue.prototype.$bus = this;
    //将所有的接口传到Vue身上，所有的组件身上都可以直接使用这些接口
    Vue.prototype.$API = API;
  },
  //KV一致省略V
  router,  //注册路由信息：组件身上都拥有$route，$router属性
  store,   //注册仓库：组件身上都拥有$store属性
})
